﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using MySql.Data.MySqlClient;
using Entidades;
/*
 * Oct 6 2013
 * se creo la clase  MySqlUsuarioDAO para manejar todo lo referente con la entrada y salida de datos
 * de la DB.
 * con solo 2 metodos para insertar,getTodos y actualizar usuarios
 * **************************************************************************************************
 * Oct 14
 * Se agrego el metodo ConsultarClave para consultar la clave de un usuario
 * 
 */
namespace Datos
{
    public class MySqlPasajeroDAO:IUsuario
    {
        MySqlConnection conector = new MySqlConnection();
        string connectionString;
        public string s;

        public void iniciarConexion()
        {
            try
            {
                connectionString = "Server=127.0.0.1;Database=justime;Uid=root; pwd=root;";
                conector.ConnectionString = connectionString;
                conector.Open();
                s = "La conexion se ha realizado con exito";

            }
            catch
            {
                s = "Ocurrio un error al intentar conectarse";
            }

        }

        public void Conectar()
        {
            iniciarConexion();
        }

        public void Desconectar()
        {
            conector.Close();
        }

        public void Insertar(Entidades.Usuario u)
        {
            MySqlCommand cmd = conector.CreateCommand();
            cmd.CommandText = "insert into usuario(cedula,pnombre,snombre,papellido,sapellido,clave,direccion,email,telefono,calificacion,TipoUsuario) Values"+
                "(?Cedula,?pnombre,?snombre,?papellido,?sapellido,?clave,?direccion,?email,?telefono,?calificacion,?TU)";
            cmd.Parameters.AddWithValue("?Cedula", u.Cedula);
            cmd.Parameters.AddWithValue("?pnombre", u.PNombre);
            cmd.Parameters.AddWithValue("?snombre", u.SNombre);
            cmd.Parameters.AddWithValue("?papellido", u.PApellido);
            cmd.Parameters.AddWithValue("?sapellido", u.SApellido);
            cmd.Parameters.AddWithValue("?clave", u.Clave);
            cmd.Parameters.AddWithValue("?direccion", u.Direccion);
            cmd.Parameters.AddWithValue("?email", u.Email);
            cmd.Parameters.AddWithValue("?telefono", u.telefono);
            cmd.Parameters.AddWithValue("?calificacion", u.Calificacion);
            cmd.Parameters.AddWithValue("?TU", "1");

            s = cmd.CommandText;
            cmd.ExecuteNonQuery();
        }

        public List<Entidades.Usuario> getTodos()
        {
            List<Usuario> lst = new List<Usuario>();
            MySqlCommand cmd = conector.CreateCommand();
            cmd.CommandText = "Select * From usuario";
            MySqlDataReader reader = cmd.ExecuteReader();
            while (reader.Read())
            {
                Usuario c = new Pasajero();
                c.Cedula = reader["cedula"].ToString();
                c.SNombre = reader["snombre"].ToString();
                c.PNombre = reader["pnombre"].ToString();
                c.PApellido = reader["papellido"].ToString();
                c.SApellido = reader["sapellido"].ToString();
                c.Clave = reader["clave"].ToString();
                c.Direccion = reader["direccion"].ToString();
                c.Email = reader["email"].ToString();
                c.telefono = reader["telefono"].ToString();
                c.Calificacion = reader["calificacion"].ToString();
                lst.Add(c);
            }
            return lst;
        }

        public void actualizar(Usuario u)
        {
            MySqlCommand cmd = conector.CreateCommand();
            cmd.CommandText = "UPDATE usuario SET pnombre=?pnombre,snombre=?snombre,papellido=?papellido,sapellido=?sapellido,clave=?clave," +
            "direccion=?direccion,email=?email,telefono=?telefono,calificacion=?calificacion,TipoUsuario=?TU WHERE cedula=?Cedula;";
            cmd.Parameters.AddWithValue("?Cedula", u.Cedula);
            cmd.Parameters.AddWithValue("?pnombre", u.PNombre);
            cmd.Parameters.AddWithValue("?snombre", u.SNombre);
            cmd.Parameters.AddWithValue("?papellido", u.PApellido);
            cmd.Parameters.AddWithValue("?sapellido", u.SApellido);
            cmd.Parameters.AddWithValue("?clave", u.Clave);
            cmd.Parameters.AddWithValue("?direccion", u.Direccion);
            cmd.Parameters.AddWithValue("?email", u.Email);
            cmd.Parameters.AddWithValue("?telefono", u.telefono);
            cmd.Parameters.AddWithValue("?calificacion", u.Calificacion);
            cmd.Parameters.AddWithValue("?TU", u.TipoUsuario);
            cmd.ExecuteNonQuery();
        }

        public void Eliminar(Usuario u)
        {
            MySqlCommand cmd = conector.CreateCommand();
            cmd.CommandText = "DELETE FROM usuario WHERE cedula=?Cedula;";
            cmd.Parameters.AddWithValue("?Cedula", u.Cedula);
            cmd.ExecuteNonQuery();

        }
      
        public string ConsultarClave(Usuario u)
        {
            string cl=" ";
            MySqlCommand cmd = conector.CreateCommand();
            cmd.CommandText = "Select * From usuario where((cedula=?Cedula) and (clave=?Clave));";
            cmd.Parameters.AddWithValue("?Cedula", u.Cedula);
            cmd.Parameters.AddWithValue("?Clave", u.Clave);

            MySqlDataReader reader = cmd.ExecuteReader();
            reader.Read();
            cl=reader["clave"].ToString();
            return cl;
          
        }

        public string ConsultarEmail(string email)
        {
            string cl = " ";
            MySqlCommand cmd = conector.CreateCommand();
            cmd.CommandText = "Select * From usuario where email=?email;";
            cmd.Parameters.AddWithValue("?email", email);

            MySqlDataReader reader = cmd.ExecuteReader();
            reader.Read();
            cl = reader["email"].ToString();
            return cl;
        }

        public string ConsultarUsuario(Usuario u)
        {
            string cl = " ";
            MySqlCommand cmd = conector.CreateCommand();
            cmd.CommandText = "Select * From usuario where((email=?email) and (clave=?Clave));";
            cmd.Parameters.AddWithValue("?email", u.Email);
            cmd.Parameters.AddWithValue("?Clave", u.Clave);

            MySqlDataReader reader = cmd.ExecuteReader();
            reader.Read();
            cl = reader["email"].ToString();
            return cl;
        }

        public string ConsultarTipoUsuario(Usuario u)
        {
            string cl = " ";
            MySqlCommand cmd = conector.CreateCommand();
            cmd.CommandText = "Select * From usuario where(email=?email);";
            cmd.Parameters.AddWithValue("?email", u.Email);

            MySqlDataReader reader = cmd.ExecuteReader();
            reader.Read();
            cl = reader["TipoUsuario"].ToString();
            return cl;
            
        }


        public string ConsultarUsuario(string email)
        {
            string cl = " ";
            MySqlCommand cmd = conector.CreateCommand();
            cmd.CommandText = "Select * From usuario where(email=?email)";
            cmd.Parameters.AddWithValue("?email", email);
            

            MySqlDataReader reader = cmd.ExecuteReader();
            reader.Read();
            cl = reader["email"].ToString();
            return cl;
            
        }


        public Usuario getUsuario(string email)
        {
            
            MySqlCommand cmd = conector.CreateCommand();
            cmd.CommandText = "Select * From usuario where Email=?email";
            cmd.Parameters.AddWithValue("?email", email);
            MySqlDataReader reader = cmd.ExecuteReader();
            reader.Read();
            Usuario c = new Pasajero();
            c.Cedula = reader["cedula"].ToString();
            c.SNombre = reader["snombre"].ToString();
            c.PNombre = reader["pnombre"].ToString();
            c.PApellido = reader["papellido"].ToString();
            c.SApellido = reader["sapellido"].ToString();
            c.Clave = reader["clave"].ToString();
            c.Direccion = reader["direccion"].ToString();
            c.Email = reader["email"].ToString();
            c.telefono = reader["telefono"].ToString();
            c.Calificacion = reader["calificacion"].ToString();
            return c;
            
        }
    }
}
